Field of the Invention
One or more embodiments of the invention are related to the field of virtual reality systems. More particularly, but not by way of limitation, one or more embodiments of the invention enable a system that efficiently estimates the orientation of an object using data from magnetic, angular rate, and gravity sensors. The system may be for example integrated into a virtual reality display system that tracks movements of a user and quickly renders a virtual reality display based on those movements.
Description of the Related Art
Virtual reality systems are known in the art. Such systems generate a virtual world for a user that responds to the user's movements. Examples include various types of virtual reality headsets and goggles worn by a user, as well as specialized rooms with multiple displays. Virtual reality systems typically include sensors that track a user's head, eyes, or other body parts, and that modify the virtual world according to the user's movements. The virtual world consists of a three-dimensional model, computer-generated or captured from real-world scenes. Images of the three-dimensional model are generated based on the user's position and orientation. Generation of these images requires rendering of the three-dimensional model onto one or more two-dimensional displays. Rendering techniques are known in the art and are often used for example in 3D graphics systems or computer-based games, as well as in virtual reality systems.
A major challenge for existing virtual reality systems is combining realistic images with low-latency rendering, so that user's virtual reality experience matches the rapid feedback to movement observed in real environments. Existing systems often have long latency to measure changes in the user's position and orientation, and to rerender the virtual world based on these changes. 3D rendering is a complex and processor intensive operation that can take potentially hundreds of milliseconds. The result is that users perceive noticeable lag between their movements and the rendering of updated virtual environments on their displays. Three technology trends are compounding this challenge: (1) The complexity of 3D models is growing as more 3D data is captured and generated. (2) Resolution of virtual reality displays is increasing, requiring more computational power to render images. (3) Users are relying increasingly on mobile devices with limited processor capacity. As a result of these trends, high latency in rendering virtual reality displays has become a major factor limiting adoption and applications of virtual reality technology. There are no known systems that provide sufficiently low-latency rendering and display to generate highly responsive virtual reality environments given these technology constraints.
Virtual reality systems require an estimate of the user's orientation in order to generate a virtual reality display that changes as the user moves. Inefficient or complex procedures to estimate the user's orientation can also contribute to significant latency. Existing systems for orientation estimation generally use complex algorithms for sensor fusion, for example to combine measurements of magnetic field, angular rate, and gravity into an orientation estimate. One approach to sensor fusion known in the art is Kalman filtering. As discussed below in the Detailed Description section, Kalman filtering is generally complex and inefficient when applied to orientation estimation. Another approach described below in the Detailed Description section uses gradient descent to combine sensor data into an orientation estimate. While this gradient descent approach avoids some of the issues with Kalman filtering, it also requires relatively complex and potentially inefficient calculations. Existing systems for orientation estimation may not be efficient enough to support very low-latency virtual reality displays.
For at least the limitations described above there is a need for an efficient orientation estimation system using magnetic, angular rate, and gravity sensors.